<style scoped>
  .weui-form-preview__hd .weui-form-preview__value {
    font-size: 1.2em;
    padding-right: 20px;
  }
  .page-infinite-wrapper {
    background: #e3e3e3;
  }
  .sellform >>> .weui-cells {
    margin-top: 0;
    background: #e3e3e3;
  }
  .sellform >>> .weui-loadmore__tips {
    background: #e3e3e3;;
  }
  .sellform >>> .weui-loadmore {
    margin-bottom: 0;
  }
  .weui-form-preview {
    margin: 5px;
    border-radius: 5px;
  }

  .rj-cell-child {
    display: inline-block;
    font-size: 0;
    padding: 5px 15px;
    text-align: left;
  }
  .rj-cell-child.max span{
    font-size: 16px;
    padding-right: 20px;
  }
  .rj-cell-child.minpad{
    padding-right: 10px !important;
  }
  .rj-cell-child label {
    color: #333;
    font-size: 14px;
  }
  .rj-cell-child span {
    padding-left: 20px;
    font-size: 14px;
    color: #333;
  }
  .rj-cell-child .tip {
    font-size: 16px;
    color: #333;
  }
  .rj-cell-child i {
    font-size: 18px;
    font-style: normal;
    color: #333;
  }
  .rj-cell-child-tit {
    background: #eee;
    font-size: 14px;
    padding: 5px 15px;
    border-bottom: 1px solid #ddd;
  }
  .weui-form-preview__ft .weui-form-preview {
    background: #f5f5ef;
  }
  .weui-form-preview__ft {
    line-height: normal;
  }



  .weui_tab_bd {
    background: #eee;
  }
  .weui-form-preview {
    background-color: #fff;
    margin: 5px;
    border-radius: 5px;
  }
  .weui-form-preview__hd label, .weui-form-preview__hd em {
    font-size: .9em !important;
  }
  .weui_navbar {
    white-space: nowrap;
    overflow: scroll;
    display: block !important;
    border-bottom: 1px solid #BCBAB6;
    font-size: 0;
    /*background: #fafafa;*/
  }
  .weui_navbar_item {
    font-size: 14px;
    display: inline-block;
    /*width: 25%;*/
    padding: 13px 0;
    background: #fff;
    position: relative;
    color: #888;
  }
  .weui_navbar_item.weui_bar_item_on {
    background-color: #f5f5f5;
    color: #00913a;
  }
  .weui_navbar:after {
    border-bottom: 0;
  }
  .weui_navbar_item:after {
    content: " ";
    position: absolute;
    right: 0;
    top: 0;
    width: 1px;
    height: 100%;
    border-right: 1px solid #cccccc;
    color: #cccccc;
    -webkit-transform-origin: 100% 0;
    transform-origin: 100% 0;
    -webkit-transform: scaleX(0.5);
    transform: scaleX(0.5);
    font-size: 10px;
  }
  .weui-panel__bd {
    text-align: left;
  }
  .hoverbar {
    background: #03A9F4;
    position: fixed;
    bottom: 100px;
    right: 20px;
    height: 50px;
    line-height: 50px;
    width: 50px;
    z-index: 100;
    font-size: 30px;
    border-radius: 50%;
    box-shadow: 0px 2px 3px rgba(100, 100, 100, 0.5);
    color: #fff;
  }
  .flowbtn {
    position: absolute;
    top: 5px;
    right: 5px;
    z-index: 1000;
  }
</style>

<template>
  <div class="pickinglist">
<!--    <div class="hoverbar" v-if="addPerm"  @click="addItem">+</div>-->
    <SearchBar @doSearch="doSearch" />
    <div class="weui_tab">
      <div class="weui_navbar order-tabhd">
        <a class="weui_navbar_item" v-for="(item, index) in tabTitles" :key="item.guid" :style="'width:' + tabWidth" :class="{ weui_bar_item_on: postParams.status == item.stats }" href="javaScript:;" @click="switchStatus(item.stats)">{{item.name}}</a>
      </div>
      <div class="weui_tab_bd" style="background-color: #fff">
        <div class="page-infinite-wrapper" ref="wrapper" :style="{ height: wrapperHeight + 'px' }" >
          <mescroll-vue ref="mescroll" id="wrapper" :down="mescrollDown" :up="mescrollUp" @init="mescrollInit">
            <div class="weui-form-preview" v-for="(item, index) in data" :key="item.id" :ref="item.id">
              <div class="weui-form-preview__hd" @click="viewItem(item.id)">
                <label class="weui-form-preview__label">编号</label>
                <em class="weui-form-preview__value">{{item.code}}</em>
              </div>
              <div class="weui-form-preview__bd">
                <div class="weui-form-preview__item">
                  <label class="weui-form-preview__label"> 生产计划</label>
                  <span class="weui-form-preview__value">{{item.produceplanName}}[{{item.produceplanCode}}] </span>
                </div>
                <div class="weui-form-preview__item"  >
                  <label class="weui-form-preview__label">领料单编号</label>
                  <em class="weui-form-preview__value">{{item.linkedCode}}</em>
                </div>
                <div class="weui-form-preview__item">
                  <label class="weui-form-preview__label">库房名称</label>
                  <span class="weui-form-preview__value">{{item.srName}}</span>
                </div>
                <div class="weui-form-preview__item" >
                  <label class="weui-form-preview__label">库存组织</label>
                  <span class="weui-form-preview__value">{{item.orgname}}</span>
                </div>
                <div class="weui-form-preview__item">
                  <label class="weui-form-preview__label">班组名称</label>
                  <span class="weui-form-preview__value">{{item.departName}}</span>
                </div>
<!--                <div class="weui-form-preview__item">-->
<!--                  <label class="weui-form-preview__label">入库类型</label>-->
<!--                  <span class="weui-form-preview__value">{{item.typeName}}</span>-->
<!--                </div>-->
                <div class="weui-form-preview__item">
                  <label class="weui-form-preview__label">状态</label>
                  <span class="weui-form-preview__value">{{item.statusname}}</span>
                </div>
                <div class="weui-form-preview__item">
                  <label class="weui-form-preview__label">申请时间</label>
                  <span class="weui-form-preview__value">{{item.createtime}}</span>
                </div>
                <div class="weui-form-preview__item">
                  <label class="weui-form-preview__label">申请人</label>
                  <span class="weui-form-preview__value">{{item.operatorName}}</span>
                </div>
              </div>
              <div class="weui-form-preview__ft olist">
                <div class="weui-panel__bd only" :data-pickid="item.pickcode">
                  <div class="weui-form-preview" v-for="(product, index) in item.items" :key="product.guid">
                    <div class="rj-cell-child-tit">货品明细 {{index+1}}
                      <p id="acts" style="float: right;color: #1aad19;" v-if="index == 0 && item.status == 1 && item.operatorid == userid">
                        <span @click="editItems(item.items, item.pickinglistid, item.guid)" style="padding-right: 5px;">调整</span>
                      </p>
                    </div>
                    <div class="rj-cell-child max">
                      <label>产&nbsp;&nbsp;&nbsp;品：</label><span>{{product.productName}}</span>
                    </div>
                    <div class="rj-cell-child" v-if="product.specName">
                      <label>规&nbsp;&nbsp;&nbsp;格：</label><span>{{product.specName}}</span>
                    </div>
                    <div class="rj-cell-child" v-if="product.weight">
                      <label>数&nbsp;&nbsp;&nbsp;量：</label><span>{{attachUnit(product.weight, product.stockunit)}}</span>
                    </div>
                    <div class="rj-cell-child" v-if="product.shname">
                      <label>库&nbsp;&nbsp;&nbsp;间：</label><span>{{product.shname}}</span>
                    </div>
                  </div>
                </div>
              </div>

              <div class="weui-form-preview__ft" style="line-height: 50px;">
                <a class="weui-form-preview__btn weui-form-preview__btn_primary" v-for="(node, index) in item.nodes" v-if="node.operate != 'start'" :key="node.guid" href="javascript:" @click="doAct(node.operate, item.id, node.flowTaskId, node.name, node.annex, node.refuseflag)" >{{node.name}}</a>
              </div>
            </div>
          </mescroll-vue>
        </div>
      </div>
    </div>
  </div>
</template>

<script type="text/babel">
  import MescrollVue from 'mescroll.js/mescroll.vue'
  import SearchBar from '../common/SearchBar'
  export default {
    name: 'ApplyBackList2',
    components: {SearchBar, MescrollVue},
    data() {
      return {
        flowid: 31,
        userid: localStorage.userId,
        permission: {},
        permissions: [],
        isShow:true,
        postParams: {
          status: '00'
        },
        mescroll: null, // mescroll实例对象
        mescrollDown: {},
        mescrollUp: { // 上拉加载的配置.
          callback: this.upCallback, // 上拉回调,此处简写; 相当于 callback: function(page, mescroll) { }
          page: {
            num: 0, //当前页 默认0,回调之前会加1; 即callback(page)会从1开始
            size: 5 //每页数据条数,默认10
          },
          htmlNodata: '<p class="upwarp-nodata">-- 我是有底线的 --</p>',
          noMoreSize: 1,
          empty: {
            warpId: "wrapper", //父布局的id (1.3.5版本支持传入dom元素)
            tip: "暂无相关数据~" //提示
          }
        },
        wrapperHeight: 700,
        data: [],
        tabTitles: [],
        tabWidth: '50%',
        addPerm: '',
        products: [],
        oitems: [],
        currentProduct: '',
        specifications: [],
        oldItems: [],
        deledOldItemIds: [],
        editing: false,
        applyid: '',
      }
    },
    created() {
      //列表页头部不允许滑动
      document.getElementsByTagName("body")[0].className="bg";
    },
    async mounted() {
      if (this.$route.query.code != undefined) {
        this.postParams.search = this.$route.query.code;
      }
      if (this.$route.query.status != undefined) {
        this.postParams.status = this.$route.query.status;
      }
      if (this.$route.query.token != undefined) {
        localStorage.setItem('token', this.$route.query.token);
      }
      setTimeout(() => {
        this.wrapperHeight = (document.body.scrollHeight || document.documentElement.scrollHeight) - this.$refs.wrapper.offsetTop;
      }, 1000)
      //获取权限
      this.getPermission();
      this.getLabels();
    },
    methods: {
      delIt: function (id){
        let that = this;
        $.confirm("确定删除?", function() {
          that.axios({
            method: 'post',
            url: '/prod-api/produce/materialretapply/del',
            params: {id: id}
          }).then((response) => {
            if (response.data.code == 200) {
              that.getPageData();
              that.toastSuccess('删除成功！');
            } else if (response.data.msg) {
              that.toastText(response.data.msg);
            } else if (response != undefined && response.data != undefined && response.data.msg == 'sessionTimeOut') {
              //不不设置提示
            } else {
              that.toastError("系统错误");
            }
          })
        })
      },
      getLabels: async function() {
        await this.axios({
          method: 'get',
          params:{flowId: this.flowid},
          url: '/prod-api/getTabsByFlowId',
        }).then((response) => {
          if (response.data.code == 200) {
            this.$nextTick(() => {
              this.tabTitles = response.data.data;
              //tab最大宽度20%，默认选中第一个tab页
              this.tabWidth = response.data.data.length < 6 ? (100 / response.data.data.length) + '%' : '20%';
              console.log('this.tabWidth:', this.tabWidth)
              if (this.$route.query.label != undefined) {
                this.postParams.status = this.tabTitles[this.currTab].stats;
                this.getPageData();
              } else if (this.postParams.status != this.tabTitles[0].stats) {
                this.postParams.status = this.tabTitles[0].stats;
                this.getPageData();
              } else {
                this.postParams.status = this.tabTitles[0].stats;
              }
            })
          } else {
            this.toastError("系统错误");
          }
        })
      },
      getPermission: async function() {
        await this.axios({
          method: 'get',
          url: '/prod-api/getPermis',
        }).then((response) => {
          if (response.data.code == 200) {
            this.permissions = response.data.data;
          } else {
            this.toastError("获取用户权限失败");
          }

        })
      },
      switchStatus: function (sta) {
        this.postParams.status = sta;
        this.getPageData();
      },
      mescrollInit (mescroll) {
        this.mescroll = mescroll  // 如果this.mescroll对象没有使用到,则mescrollInit可以不用配置
      },
      upCallback (page, mescroll) {
        //alert(this.postParams.code)
        this.postParams.pageNum = page.num;
        this.postParams.pageSize = page.size;
        this.postParams.functionType = 2;
        // 联网请求
        this.axios({
          method: 'get',
          url: '/prod-api/produce/materialretapply/wxList',
          params: this.postParams
        }).then((response) => {
          console.log('response:', response)
          if (response.data.code == 200) {
            let data = response.data.rows != undefined ? response.data.rows : [];

            // 如果是第一页需手动置空列表
            if (page.num === 1 && this.data.length != 0) this.data = [];
            // 把请求到的数据添加到列表
            this.data = this.data.concat(data.map(item => {
              if (item.nodes) {
                item.nodes = item.nodes.map(node => {
                  if (node.operate == 'start') {
                    node.operate = 'delete';
                    node.name = '删除';
                  }
                  return node;
                })
              }
              return item;
            }));
            // 数据渲染成功后,隐藏下拉刷新的状态
            this.$nextTick(() => {
              mescroll.endSuccess(data.length)
            })
            //将获取上一访问列表临时页码恢复正常
            if (this.mescrollUp.page.size > 5) {
              this.mescrollUp.page.num = this.$store.state.list.pageNo;
              this.mescrollUp.page.size = 5;
            }
          } else if (response.data.msg) {
            this.toastText(response.data.msg);
          } else {
            this.toastError("系统错误");
          }

        }).catch((e) => {
          // 联网失败的回调,隐藏下拉刷新和上拉加载的状态;
          mescroll.endErr()
        })
      },
      getPageData: function () {
        $('#wrapper').scrollTop(0);
        this.data = [];
        this.mescroll.resetUpScroll();
      },
      doSearch: function(keywords) {
        this.postParams.search = keywords;
        this.getPageData();
      },
      viewItem: function(id) {
        this.$router.push({name: 'ViewApplyBack2', query: {id:id}});
        // this.$router.push({name: 'ApplyBackList2', query: {id:id}});
      },
      doEdit: function(guid) {
        if (!this.checkEmy('product')) {
          this.toastText('产品不能为空！');
          return false;
        } else if (!this.checkEmy('spec')) {
          this.toastText('规格不能为空！');
          return false;
        } else if (!this.checkProduct()) {
          this.toastText('货品明细产品重复！')
          return false;
        }

        //防止重复提交
        $('.subbtn').attr("disabled",true).css("pointer-events","none");
        //显示提交状态
        $.showLoading("正在提交");

        let postData = this.serialize2Obj($("#formid").serializeArray());
        postData.whinapplyid = guid;
        postData.delids = this.deledOldItemIds.join(',');
        console.log('postData:', postData)
        this.axios({
          method: 'post',
          url: '/produce/Whinapply!update.action',
          params: postData
        }).then((response) => {
          //恢复提交按钮可点击
          $('.subbtn').attr('disabled', false).css("pointer-events","auto");
          //关闭提交状态
          $.hideLoading();

          if (response.data.msg == 'success') {
            this.toastSuccess('调整成功！');
            this.doCancelEdit();
            this.getPageData();
          } else if (response.data.msg == 'canotopt') {
            this.toastText('不允许的操作！');
            this.doCancelEdit();
          } else if (response != undefined && response.data != undefined && response.data.msg == 'sessionTimeOut') {
            //不不设置提示
          } else {
            this.toastError("系统错误");
          }

        }).catch(error => {
          //恢复提交按钮可点击
          $('.subbtn').attr('disabled', false).css("pointer-events","auto");
          //关闭提交状态
          $.hideLoading();
        })
      },
      doCancelEdit: function() {
        this.oldItems = [];
        this.oitems = [];
        this.deledOldItemIds = [];
        this.editing = false;
      },
      editItems: function(items, pickid, guid) {
        this.applyid = guid;
        this.oldItems = items;
        this.oitems = [items.length];
        this.editing = true;
        this.getProducts(pickid);
      },
      getProducts: function(id) {
        this.axios({
          method: 'get',
          url: '/prod-api/produce/materialretapply/getWhinapplyInfo',
          params: {pickinglistid: this.applyid}
        }).then((response) => {
          if (response.data.code == 200) {
            let data = response.data;
            this.products = data.products;
          } else if (response != undefined && response.data != undefined && response.data.msg == 'sessionTimeOut') {
            //不不设置提示
          } else {
            this.toastError("系统错误");
          }

        })
      },
      getSpecByPro: function() {
        this.axios({
          method: 'get',
          url: '/produce/Whinapply!getSpeByproduct.action',
          params: {productid: this.currentProduct, stats: '1,4'}
        }).then((response) => {
          if (response.data.msg == 'success') {
            let data = response.data;
            this.specifications = data.specifications;
          } else if (response != undefined && response.data != undefined && response.data.msg == 'sessionTimeOut') {
            //不不设置提示
          } else {
            this.toastError("系统错误");
          }

        })
      },
      addItem: function(index) {
        if (!this.checkEmy('product')) {
          this.toastText('产品不能为空！');
          return false;
        } else if (!this.checkEmy('spec')) {
          this.toastText('规格不能为空！');
          return false;
        }
        this.oitems.push(index);
      },
      doDelOldItem: function(index, guid) {
        this.oldItems.splice(index, 1);

        this.deledOldItemIds.push(guid);
      },
      doDelItem: function() {
        this.oitems.pop();
      },
      cutDate: function(date) {
        return date.substring(0, 10);
      },
      toQaform: function (guid, nodeid, annex) {
        window.location.href = '/trace/Qaform!index.action?orderguid='+guid+'&orderType=3'+'&nodeid=' + nodeid + '&annex=' + annex;
      },
      doAct: function (name, id, nodeid, actname, annex, refuseflag) {
          let acts = this.$store.state.acts;
        if (name == 'delete') {
          this.delIt(id);
        } else {
          this.$router.push({name: acts[name], query: {id:id, nodeid: nodeid, title: actname, annex: annex, refuseflag: refuseflag}});
        }
      },
      //判断明细产品是否重复
      checkProduct: function () {
        let parr1 = [];
        let parr2 = [];
        for (let i=0; i<$('.oitem').length; i++) {
          let tempProduct = $('.product').eq(i).val();
          let tempSpec = $('.spec').eq(i).val();
          parr1.push({[tempProduct]: tempSpec});
          parr2.push({[tempProduct]: tempSpec});
        }
        //json数组去重
        for (var i = 0; i < parr2.length; i++) {
          for (var j =i+1; j <parr2.length; ) {
            if (Object.keys(parr2[i])[0] == Object.keys(parr2[j])[0] && Object.values(parr2[i])[0] == Object.values(parr2[j])[0] ) {
              parr2.splice(j, 1);//去除重复的对象；
            }else {
              j++;
            }
          }
        }
        return parr1.length == parr2.length ? true : false;
      }
    },
    activated () {
      //列表页头部不允许滑动
      document.getElementsByTagName("body")[0].className="bg";


      //判断是否是返回上一页
      if (this.$store.state.list.reffer != this.$options.name) return;
      //获取上一次访问列表数据
      this.mescrollUp.page.num = 0;
      this.mescrollUp.page.size = this.$store.state.list.pageNo * this.mescrollUp.page.size;
      this.getPageData();
      //定位
      this.$nextTick(function(){
        let position = this.$store.state.list.postion //返回页面取出来
        $('#wrapper').scrollTop(position);
        let status = this.$store.state.list.status;
        this.postParams.status = status;
      })
    },
    beforeRouteLeave(to, from, next){
      //取消列表页头部不允许滑动
      document.body.removeAttribute("class","bg");

      let position = $('#wrapper').scrollTop();
      let status = this.postParams.status;
      this.$store.commit('setPosition', position) //离开路由时把位置存起来
      this.$store.commit('setStatus', status)
      this.$store.commit('setPageNo', this.mescrollUp.page.num);
      this.$store.commit('setReffer', this.$options.name);
      next()
    },



  };
</script>
